package utils;
/*
 处理各种情况的用户输入，得到用户的控制台输入。
 */

import java.util.*;
public class Utility {
    private static Scanner scanner = new Scanner(System.in);
    //一个只能读入非负小数的静态方法
    public static double readDouble() {
        while (true) {
            try {
                double i = Double.parseDouble(scanner.nextLine());
                if (i < 0) {
                    throw new IllegalArgumentException("输入错误！请输入一个大于等于0的小数:");
                }
                return i;
            } catch (NumberFormatException e) {
                System.out.println("输入错误！请输入一个小数:");
            } catch (IllegalArgumentException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    //一个只能读入整数的静态方法
    public static int readInt() {
        while (true) {
            try {
                int i = Integer.parseInt(scanner.nextLine());
                return i;
            } catch (NumberFormatException e) {
                System.out.println("输入错误！请输入一个整数:");
            }
        }
    }

    //一个只能读入整数且不为负数的静态方法
    public static int readUnsignedInt() {
        while (true) {
            try {
                int i = Integer.parseInt(scanner.nextLine());
                if (i < 0) {
                    throw new IllegalArgumentException("输入错误！请输入一个正整数:");
                }
                return i;
            } catch (NumberFormatException e) {
                System.out.println("输入错误！请输入一个整数:");
            } catch (IllegalArgumentException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    //只能输出y还是n,便于用户输入的判断
    public static char readYOrN() {
        while (true) {
            String s = scanner.nextLine().trim().toLowerCase();
            if ("y".equals(s)) {
                return 'y';
            } else if ("n".equals(s)) {
                return 'n';
            }else{
                System.out.println("输入错误!重新输入:");
            }
        }
    }
    //读字符串的方法
    public static String readLine() {
        return scanner.nextLine();
    }
    //一个方法，只能输入1，2，3分别表示支付宝、微信、银行卡
    public static String readPaymentMode() {
        while (true) {
            String s = scanner.nextLine().trim();
            if ("1".equals(s)) {
                return "支付宝";
            } else if ("2".equals(s)) {
                return "微信";
            }else if ("3".equals(s)) {
                return "银行卡";
            }else{
                System.out.println("输入错误!重新输入:");
            }
        }
    }


}
